User interfaces (“UIs”) are an important element of many software applications, machines, devices, and processes. A UI (sometimes termed a man-machine interface) permits a user to access and control the capabilities of an application, machine, device, or process by providing a mechanism for the user to interact with the elements or components of the application, machine, device, or process. A UI may permit a user to set certain operating parameters, provide input data, select certain desired functions for execution, specify a data field for data input or specify an output format for data, and otherwise configure the operation of the application, machine, device, or process.
Typically a User Interface will have a set of adjustable or configurable features, such as a list of selectable entries in a drop-down menu, selectable functions, selectable data formats, selectable tabs, or other available features. And, also typically, a user will over time prefer certain UI elements or settings, and tend to utilize a UI that is configured a specific way or ways for most of their uses of the related application, machine, device, or process. For example, a user may typically enter or request certain data types, where those types represent a sub-set of the available data types. Similarly, a user may regularly utilize only a sub-set of the data fields or selectable features that are part of a user interface (e.g., a user may only regularly use a sub-set of the displayable folders, options, etc.).
Different users of a system which is used by multiple users may have their own preferred set of UI features that they use regularly. It is possible for a multi-user system or platform to have hundreds or thousands of desired UI configurations, with each such configuration associated with a different user of the system. This can create inefficiencies because re-configuring or personalizing a UI may take time for a user to do, and typically, a user may not be aware of which UI elements they customarily use or the frequency with which they use certain elements. Further, the converse option of leaving a complex UI in a general state may confuse a user or cause them to waste time navigating through the options that are part of the UI.
Conventional approaches to configuring a UI in a personalized (i.e., user customized or dependent) manner are inefficient and suffer from limitations that make such approaches impractical for some operating environments. For example, most methods of providing a customized UI are restricted to use on a specific machine and/or are limited in the variety of configurations that may be associated with a specific user. Embodiments of the invention are directed toward solving these and other problems individually and collectively.